Instalacion del lector de tarjetas para utilizar el dni electronico en Linux
Con la nueva versión 1.7.1 Autofirma ya funciona en Linux incluso con la interfaz gráfica, de todas maneras siguen siendo necesarios algunos arreglos que se indican aquí abajo para hacerlo funcionar.
Podemos descargar la versión mas actualizada de AutoFirma desde aquí: Descarga AutoFirma
Para hacer que funcione el lector de tarjetas debemos de instalar los siguientes paquetes
# zypper in pcsc-tools
Para mi lector de tarjetas el siguiente paquete tambien es necesario
# zypper in pcsc-acsccid
Para comprobar que el lector funciona ejecutamos el siguiente comando:
> pcsc_scan
Al introducir una tarjeta veremos algo como esto:
En caso de que el lector no se detecte veremos algo como esto:
En este caso podemos intentar instalar unos paquetes a mayores:
# zypper in pcsc-acr38 libccid pcscd libacr38u libacr38ucontrol0 libpcsclite1 pinentry-gtk2 pcsc-tools libpcsclite-dev
libreadline6 libreadline-dev coolkey
Para poder utilizar el DNI electronico tenemos que instalar el programa de Autofirma y a mayores la libreria de libpkcs11
Instalamos el paquete de Autofirma y el paquete libpkcs11:
# rpm -i autofirma-1.6.5-1.noarch_SUSE.rpm
# rpm -i libpkcs11-dnie-1.6.6-1.x86_64.rpm
NOTA: Si surge algun problema de dependencias las buscamos con zypper y las instalamos
Una vez hecho esto tenemos que resolver unos problemas que tendremos con autofirma, al intentar ejecutarlo desde la consola veremos esto:
Este error se produce porque autofirma carga una libreria de 32 bits cuando el ejecutable es de 64 bits, para subsanar este error podemos hacer este truco:
# ln -s /usr/lib64 /opt/firefox-
Otro error que podemos obtener es este:
Para solucionar este error debemos modificar el archivo .desktop de autofirma para incluirlo como programa por defecto para el protocolo afirma
Buscamos el archivo autofirma.desktop en la ruta /usr/share/applications y en la ruta /usr/local/share/applications (Puede estar en las dos a la vez, es mejor modificarlo en ambos sitios), tendra un contenido como el siguiente:
Incluimos al final del todo la siguiente linea:
MimeType=x-scheme-handler/afirma;
El archivo deberia de quedar asi:
Otro fallo esta el archivo es el archivo /usr/bin/autofirma tendremos que incluir en la primera linea el interprete #!/bin/bash, de manera que el archivo tiene que quedar asi:
#!/bin/bash
java -jar /usr/lib64/autofirma/autofirma.jar $*
Una vez realizados todos los pasos anteriores el DNI electronico deberia de estar listo para ser utilizado por lo menos con el programa de autofirma, a traves del navegador igual harian falta algunas modificaciones en firefox
En firefox podemos intentar hacer algunas cosas para hacer funcionar el DNIe, lo primero es instalar el modulo de libpkcs11 en el firefox
En firefox nos vamos a:
Ajustes > Privacidad y seguridad > Dispositivos de seguridad
Una vez dentro le damos a cargar y seleccionamos el siguiente archivo para cargar el modulo (Como nombre podemos poner lo que queramos, yo puse DNIe):
/usr/lib64/libpkcs11-dnie.so
Es importante que solo tengamos este modulo cargado para manejar el lector de tarjetas, un error que cometia antes era tener cargado el modulo dnieopensc-pkcs11.so y este modulo no me permitia usar el dni (cuando firefox intentaba acceder al lector incluso se bloqueaba el propio navegador)
Algunos sitios necesitan que iniciemos sesion con el DNIe desde la pantalla de Dispositivos de seguridad, al darle a Iniciar sesion se nos pedira la contrasenia del DNI:
Una vez hecho esto el DNI electronico deberia de funcionar sin problemas en el navegador (Solo en Firefox), podemos usarlo para autenticarnos en paginas que permitan hacerlo con el DNI electronico (Si queremos firmar archivos tenemos que hacerlo mediante el programa AutoFirma
Tambien podemos verificar el funcionamiento directamente desde aqui:
Verificar DNIeUna cosa que podemos hacer a mayores si tenemos algun problema es incluir las siguientes Autoridades Certificadoras en el firefox, nos vamos a:
Ajustes > Privacidad y seguridad > Ver Certificados
Le damos a Importar y cargamos estos 3 arhicvos:
Para poder firmar archivos con el DNI 3.0 en linux tenemos que hacer una serie de configuraciones
Primero tenemos que instalar el JDK 8 (Con las versiones mas modernas no funciona)
zypper in java-1_8_0-openjdk java-1_8_0-openjdk-devel
Una vez tengamos instalada esa version de java, vamos a hacer un cambio en el script que lanza el AutoFirma para que se ejecute con esa version de java, modificamos el archivo /usr/bin/autofirma para que quede tal que asi:
#!/bin/bash
/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/bin/java -jar /usr/lib64/autofirma/autofirma.jar $*
Otra de las configuraciones que tenemos que hacer es editar el archivo pkcs11.txt en mi equipo la ruta es ~/.mozilla/firefox/y6tcqn8f.default-esr-1/
NOTA: Para saber la ruta del archivo podemos usar este comando strace autofirma 2>&1 | grep -i "pkcs11.txt"
En este archivo tenemos que incluir la informacion del modulo que cargamos en el firefox, para que autofirma pueda hacer uso de el, el contenido tiene que ser el siguiente:
library=/usr/lib64/libpkcs11-dnie.so
name=DNIe
Una vez realizados estos cambios deberiamos de poder firmar archivos, tenemos que hacerlo desde la consola, a traves de la interfaz grafica da error
Para firmar archivos:
> autofirma sign -i <archivo a firmar> -o <Archivo salida> -certgui
Para verificar firmas:
> autofirma verify -i <archivo a verificar>
NOTA: Los archivos que se van a verificar no pueden tener espacios en su nombre...
Podemos usar un script como el siguiente para tener una interfaz grafica para firmar y ver firmas de archivos:
Cuando intentamos acceder a la información del certificado de un archivo firmado obtenemos el siguiente error:
Para solucionar este error y que se muestre la información del certificado hacemos lo siguiente:
Primero dentro de la carpeta /usr/local/share/applications creamos un archivo certView.desktop con el siguiente contenido:
[Desktop Entry]
Encoding=UTF-8
Version=1
Type=Application
Terminal=true
Categories=Office;Utilities;Signature
Exec=/home/jericho/certView.sh %U
Name=CertView
MimeType=application/pkix-cert;
Despues en nuestra carpeta personal en mi caso /home/jericho creamos el archivo certView.sh con el siguiente contenido:
#!/bin/bash
openssl x509 -in $1 -inform der -text | less
Y le damos permisos de ejecucion:
chmod +x certView.sh
Para terminar, en el archivo ~/.config/mimeapps.list añadimos la siguiente linea para que se ejecute el archivo desktop que acabamos de crear asociado con los archivos application/pkix-cert (.cer):
application/pkix-cert=certView.desktop
Una vez hecho todo esto al intentar abrir la información del certificado se abrirá una terminal con la información que nos da el comando openssl sobre el certificado.
El DNI 2.0 deberia de funcionar bien en linux, si necesidad de hacer tantos ajustes (Incluso con la interfaz grafica del autofirma), el problema es que el DNI 3.0 funciona muy mal, solo se pueden firmar archivos desde la interfaz de la consola que funciona bastante mal y nisiquiera te permite incluir los datos firmados en la propia firma (En la interfaz grafica lo hace por defecto, quiza por eso falla al usarla).
De todas maneras para usar el DNI 3.0 desde el navegador (Solo Firefox) deberia de funcionar bien para autenticarse en paginas webs y demas
DNI 3.0 mision imposible
Starting to play with DNIe 3.0 and OpenSC
DNIe 3.0 is now supported by OpenSC
INSTALAR EL CERTIFICADO DIGITAL Y AUTOFIRMA EN UBUNTU
DNIe | 3.0 | Lector tarjetas | smartcard | opensc